/*
@InterfaceName PlanScheduleService
@Date      2022/7/31
@Description TODO
@Author    SubUp
@version   1.0
*/
package com.sunjob.mrojobschedule.service;

import com.sunjob.common.domain.scheduleServer.MessageSchedule;
import com.sunjob.common.domain.scheduleServer.PlanSchedule;
import com.sunjob.common.domain.scheduleServer.orm.PlanResult;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface PlanScheduleService {
    /**
     * 查询原始计划管理数据
     * @param pageId
     * @return 计划信息集合
     */
    List<PlanSchedule> selectPlanList(String pageId);

    /**
     * 返回计划调度界面展示计划管理数据
     * @param  pageId
     * @return 计划处理信息集合
     */
    List<PlanResult> selectPlanOrmList(String pageId);

    /**
     * 查询planId所对应的原始计划信息
     * @param planId
     * @return
     */
    List<PlanSchedule> selectPlanById(String planId);

    /**
     * 查询planId所对应的计划管理数据
     * @param planId
     * @return
     */
    List<PlanResult> selectPlanOrmById(String planId);


    /**
     * 根据检修对象名，模糊查询计划调度管理数据
     * @param examineObjName
     * @return 计划信息集合
     */
    List<PlanResult> selectPlanResultByObjName(String examineObjName);

    /**
     * 根据不同的计划性质进行计划数据的查询
     * @param natureId
     * @return
     */
    List<PlanResult> selectPlanResultByNatureId(String natureId);

    /**
     * 根据检修对象类型，模糊查询计划调度管理数据
     * @param examineObjType
     * @return
     */
    List<PlanResult> selectPlanResultByObjType(String examineObjType);

    /**
     * 添加计划记录数据
     * @param plan
     * @return 1-true 0-false
     */
    Integer addSave(PlanSchedule plan);

    /**
     * 编辑计划记录数据
     * @param plan
     * @return 1-true 0-false
     */
    Integer editSave(PlanSchedule plan);

    Integer editPlanSave(PlanResult plan);
    /**
     * 修改计划的审批状态
     * @param planId
     * @param examineState
     * @return
     */
    Integer updateSaveByExamineState(String planId,String examineState);

    /**
     * 修改计划的状态
     * @param planId
     * @param planState
     * @return
     */
    Integer updateSaveByPlanState(String planId, String planState);

    /**
     * 删除计划记录
     * @param planId
     * @return 1-true 0-false
     */
    Integer deleteSave(String planId);

    /**
     * 根据审批状态删除计划记录
     * @param planId
     * @param examineState
     * @return
     */
    Integer deleteSaveByExamineState(String planId, String examineState);

    Map planNature(String staffName, Integer planStateExplain);
}
